home *** CD-ROM | disk | FTP | other *** search
/ World of Games / World of Games.iso / games / demolition / autoexec.amos / autoexec.amosSourceCode next >
AMOS Source Code  |  1995-01-31  |  8KB  |  294 lines

  1. '       DEMOLITION MISSION by SAROG copyright 1990 
  2. '       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  3. Auto View Off : Close Workbench 
  4. 'Load "dh0:amos files/biplane38.abk" 
  5. 'Load "dh0:amos files/samplesBomber.abk" 
  6. 'Load "dh0:amos music/thesong.abk" 
  7. Screen Open 0,352,290,16,Lowres
  8. Load Iff "df0:demscr",0
  9. Hide On : Curs Off : Flash Off 
  10. Screen Open 1,352,290,16,Lowres
  11. Get Sprite Palette : Hide On : Curs Off : Flash Off 
  12. Screen Hide 1 : Screen Show 0 : Auto View On 
  13. Wait 50 : Music 1 : Tempo 16
  14. Get Disc Fonts : Screen 1 : Double Buffer 
  15. Cls 0 : Set Font 3 : Ink 15,0
  16. Text 10,80,"DEMOLITION  MISSION"
  17. Set Font 5 : Ink 8,0
  18. Text 35,120,"WAS WRITTEN BY SAROG"
  19. Text 24,150,"USING AMOS THE CREATOR"
  20. Set Font 4 : Ink 5,0
  21. Text 48,210,"PRESS FIRE TO PLAY"
  22. Pen 11 : Paper 0 : Locate 0,30 : Centre "SPACE TO PAUSE"
  23. Screen 0 : Set Font 1 : Screen 1 : Set Font 7 : Reserve Zone 17
  24. Wait 500 : Screen 0 : Fade 8 : Wait 120 : Cls 0
  25. Screen Hide 0 : Screen Show 1
  26. Screen 0 : Get Sprite Palette 
  27. Randomize Timer : Make Mask 
  28. Dim NAME$(10),HISCORE(10),ZNTOP(16),BUILD(16),IMG(16)
  29. Open In 1,"df0:hiscores"
  30. For F=0 To 9
  31.    Line Input #1,HISCORE(F)
  32.    Line Input #1,NAME$(F)
  33. Next F
  34. Close 1
  35. Global A1$,A2$,A3$,A4$,A5$,A9$,A10$,A11$,HISCORE(),NAME$(),ZNTOP(),BUILD()
  36. Global PHEIGHT,BHEIGHT,ZN,CRASH,ZNTOP,FLAMES,BLDS,IMG()
  37. Global ZNCOUNT,LEVEL,STDHT,FLAG,SCORE,LIN,CHUNK,MISS,MUSVOL
  38. For F=1 To 15 : Channel F To Bob F : Next F : PATHS
  39. For F=1 To 16 : BUILD(F)=F : Next F : MUSVOL=25
  40. Repeat : Until Fire(1) : Clear Key 
  41. '
  42. RESTART:
  43. Screen Hide 0 : Screen Show 1 : Screen 1 : Cls 0
  44. LEVEL=1 : STDHT=150 : FLAG=1 : SCORE=0
  45. '
  46. LEVELUP:
  47. PHEIGHT=50 : ZN=0 : ZNCOUNT=16 : MISS=0
  48. Ink 6,1 : Set Pattern 2 : Pen 15 : Paper 0 : SKY1
  49. Locate 9,2 : Print "LEVEL ";LEVEL : Locate 25,2 : Print "SCORE ";SCORE
  50. Bar 0,251 To 351,290
  51. Set Zone 17,0,251 To 351,290
  52. BUILDINGS
  53. For F=0 To MUSVOL : Mvolume F : Wait 1 : Next F
  54. Bob 1,0,PHEIGHT,1
  55. Amal 1,A1$ : Amal On 1
  56. '
  57. '
  58. Do 
  59.    If Chanmv(1)=0
  60.       Add PHEIGHT,10,50 To 250
  61.       Exit If ZNCOUNT=0
  62.       Bob 1,0,PHEIGHT,1
  63.       Amal 1,A1$
  64.       Amal On 1
  65.    End If 
  66.    '
  67.    If Chanmv(2)<>0
  68.       ZN=Zone(X Bob(2),Y Bob(2))
  69.       If ZN
  70.          Bob 3,X Bob(2),Y Bob(2),6
  71.          DEMOLISH
  72.       End If 
  73.    Else If Fire(1)
  74.          Bob 2,X Bob(1)-12,PHEIGHT,22
  75.          Amal 2,A2$
  76.          Amal On 2
  77.       End If 
  78.    End If 
  79.    '
  80.    If Inkey$=" " Then PAUSE
  81.    '
  82.    CRASH=Zone(X Bob(1),Y Bob(1))
  83.    If CRASH
  84.       DEATH : FLAG=0 : Exit 
  85.    End If 
  86. Loop 
  87. '
  88. '
  89. If FLAG
  90.    Bob Off 1
  91.    Bob 9,0,250,1 : Amal 9,A9$ : Amal On 9
  92.    For F=MUSVOL To 0 Step -1 : Mvolume F : Wait 1 : Next F
  93.    Repeat : Until Chanmv(9)=0 : Bob Off 9 : Bob 10,100,250,34
  94.    Amal 10,A10$ : Amal On 10 : Sam Play 15,1,7000 : Wait 90 : Sam Play 2
  95.    BONUS=500+(300*LEVEL) : PNLTY=(MISS*20)+((PHEIGHT-100)*2)
  96.    If PNLTY>BONUS
  97.       PNLTY=BONUS
  98.    End If 
  99.    Pen 11 : Locate 13,10 : Print "LEVEL BONUS = ";BONUS : Wait 50
  100.    For F=BONUS To BONUS-PNLTY Step -20 : Locate 27,10 : Print F;" " : Bell : Next F
  101.    Wait 140 : Bob Off 10 : Add LEVEL,1 : PHEIGHT=50 : Add SCORE,BONUS-PNLTY
  102.    If STDHT>70
  103.       Add STDHT,-10
  104.    End If 
  105.    Locate 13,10 : Print Space$(20)
  106.    Goto LEVELUP
  107. End If 
  108. Wait 150 : Bob Off : HISCORES
  109. Pen 12 : Locate 0,28 : Centre "Music: 1-Loud   2-Soft   3-Silent"
  110. Pen 14 : Locate 0,30 : Centre "PRESS FIRE TO PLAY"
  111. Repeat 
  112. I$=Inkey$
  113. If I$="1" Then MUSVOL=63
  114. If I$="2" Then MUSVOL=25
  115. If I$="3" Then MUSVOL=0
  116. If I$<>"" Then Mvolume MUSVOL
  117. Until Fire(1)
  118. Goto RESTART
  119. '  
  120. '
  121. Procedure BUILDINGS
  122.    BCR=8 : PTRN=29 : APEX=30 : BLDS=8+LEVEL : SHUFFLE
  123.    For F=1 To 16
  124.       ZN=BUILD(F)
  125.       Add BCR,1,8 To 11 : Ink BCR,0 : IMG(ZN)=BCR+18
  126.       Add PTRN,1,29 To 34
  127.       Add APEX,1,30 To 33
  128.       If F<=BLDS
  129.          BHEIGHT=Rnd(80)
  130.          Set Pattern PTRN
  131.          Bar BUILD(F)*20-3,BHEIGHT+STDHT To BUILD(F)*20+10,250
  132.          Paste Bob BUILD(F)*20-3,BHEIGHT+STDHT-4,APEX
  133.          Set Zone ZN,BUILD(F)*20-3,BHEIGHT+STDHT-4 To BUILD(F)*20+10,250
  134.          ZNTOP(ZN)=BHEIGHT+STDHT-4
  135.          Noise To 15 : For G=ZN*5 To(ZN+1)*5 : Play G,1 : Next G
  136.       Else 
  137.          Reset Zone ZN
  138.          Add ZNCOUNT,-1
  139.          ZNTOP(ZN)=0
  140.       End If 
  141.    Next F
  142. End Proc
  143. Procedure DEMOLISH
  144.    If ZN=17
  145.       Sam Play 12,5,15000
  146.       Inc MISS
  147.    Else 
  148.       Sam Play 12,5,6000
  149.    End If 
  150.    Amal 3,A3$ : Amal On 3 : Bob Off 2
  151.    If Bob Col(3)
  152.       For F=5 To 8
  153.          If Col(F)
  154.             Bob Off F
  155.          End If 
  156.       Next F
  157.    End If 
  158.    If ZN=17 Then Pop Proc
  159.    CHUNK=Rnd(10)+10 : Add SCORE,15 : Locate 31,2 : Print SCORE
  160.    Add ZNTOP(ZN),CHUNK : Ink 0
  161.    If ZNTOP(ZN)>=247
  162.       Reset Zone ZN : Add ZNCOUNT,-1
  163.       Bar ZN*20-3,247-CHUNK To ZN*20+10,250
  164.       ZNTOP(ZN)=0 : Pop Proc
  165.    Else 
  166.       Set Zone ZN,ZN*20-3,ZNTOP(ZN) To ZN*20+10,250
  167.    End If 
  168.    Bar ZN*20-3,ZNTOP(ZN)-CHUNK To ZN*20+10,ZNTOP(ZN)+4
  169.    Paste Bob ZN*20-3,ZNTOP(ZN)+1,IMG(ZN)
  170.    Add FLAMES,1,5 To 8
  171.    Bob FLAMES,ZN*20-3,ZNTOP(ZN)+4,23
  172.    Amal FLAMES,A5$ : Amal On FLAMES
  173. End Proc
  174. Procedure PATHS
  175.    A1$="A 0,(1,5)(2,5)(3,5)(4,5); M 390,0,260"
  176.    A2$="M 0,220,100"
  177.    A3$="A 1,(6,4)(7,4)(8,4)(9,4)(21,4); M 0,0,5"
  178.    A4$="A 1,(9,9)(10,9)(11,9)(12,9)(13,9)(14,9)(15,9)(16,9)"
  179.    A4$=A4$+"(17,9)(18,9)(19,9)(20,9)(21,9);M 0,0,13"
  180.    A5$="A 0,(23,12)(24,12)(25,12);M 0,0,2"
  181.    A9$="A 0,(1,5)(2,5)(3,5)(4,5);M 100,0,66"
  182.    A10$="A 0,(37,10)(38,10);M 0,0,2"
  183.    A11$="A 1,(34,7)(35,7)(36,7);M 0,0,3"
  184. End Proc
  185. Procedure DEATH
  186.    Bob 11,X Bob(1),Y Bob(1)-3,34
  187.    Amal 11,A11$ : Amal On 11 : Sam Play 15,6,8000 : Bob Off 1 : Wait 50
  188.    For F=Y Bob(11) To 250 Step 2 : Bob 11,X Bob(11),F,36 : Wait 1 : Next F
  189.    Sam Play 9,6,13000 : Wait 50 : Bob 4,X Bob(11)-6,244,9
  190.    Amal 4,A4$ : Amal On 4 : Sam Play 15,4,3000 : Bob Off 11
  191.    Ink 11,0 : Text 90,110,"GAME  OVER" : Wait 50
  192. End Proc
  193. Procedure HISCORES
  194.    For LIN=0 To 9
  195.       If SCORE>=HISCORE(LIN)
  196.          For G=9 To LIN+1 Step -1
  197.             NAME$(G)=NAME$(G-1)
  198.             HISCORE(G)=HISCORE(G-1)
  199.          Next G
  200.          NAME$(LIN)=""
  201.          HISCORE(LIN)=SCORE
  202.          TABLE
  203.          NEWENTRY
  204.          Exit 
  205.       End If 
  206.    Next LIN
  207.    If LIN=10 Then TABLE
  208. End Proc
  209. Procedure TABLE
  210.    Screen Hide 1 : Cls 0 : Screen Show 0 : Screen 0
  211.    Cls 0 : SKY0 : Mvolume MUSVOL
  212.    Paper 0 : Pen 15 : Ink 11,0 : Text 20,45,"Hi Scores"
  213.    For G=0 To 9
  214.       Locate 12,(G+4)*2
  215.       Print Using "#####";HISCORE(G);
  216.       Print Space$(9);NAME$(G)
  217.    Next G
  218. End Proc
  219. Procedure NEWENTRY
  220.    Curs Off : Flash 4,"(000,5)(333,5)(666,5)(999,5)(CCC,5)(FFF,5)"
  221.    Clear Key : C=26
  222.    Repeat 
  223.       Locate C,(LIN+4)*2
  224.       Pen 4 : Print "_";Chr$(8) : Pen 15
  225.       Repeat 
  226.          N$=Inkey$
  227.          If(C=26) and(N$=Chr$(8)) Then N$=""
  228.          If(N$<>Chr$(8)) and(N$<>Chr$(13)) and((N$<"a") or(N$>"z")) Then N$=""
  229.       Until N$<>""
  230.       If N$=Chr$(13)
  231.          Locate C,(LIN+4)*2 : Print " "
  232.          Exit 
  233.       End If 
  234.       If N$=Chr$(8)
  235.          Locate C,(LIN+4)*2
  236.          Print " "
  237.          Dec C
  238.          NAME$(LIN)=Left$(NAME$(LIN),C-26)
  239.       Else 
  240.          NAME$(LIN)=NAME$(LIN)+Upper$(N$)
  241.          Locate C,(LIN+4)*2
  242.          Print Upper$(N$)
  243.          Inc C
  244.       End If 
  245.    Until C=36
  246.    Flash Off : SAVHISCORES
  247. End Proc
  248. Procedure SAVHISCORES
  249.    On Error Proc WRITPROTEC
  250.    Resume Label CONTINUE
  251.    '
  252.    Show On 
  253.    '
  254.    Open Out 1,"df0:hiscores"
  255.    For F=0 To 9
  256.       Print #1,HISCORE(F) : Print #1,NAME$(F)
  257.    Next F
  258.    Close 1
  259.    Open Out 2,"df0:hiscoresBACKUP"
  260.    For F=0 To 9
  261.       Print #2,HISCORE(F) : Print #2,NAME$(F)
  262.    Next F
  263.    Close 2
  264.    CONTINUE:
  265.    Hide On 
  266. End Proc
  267. Procedure WRITPROTEC
  268.    Locate 0,31 : Pen 13
  269.    Centre "CAN'T SAVE ---- WRITE PROTECTED"
  270.    Resume Label 
  271. End Proc
  272. Procedure SKY0
  273.    Set Rainbow 0,0,450,"(28,-1,1)","(28,1,1)","(28,0,1)"
  274.    Rainbow 0,100,40,290
  275. End Proc
  276. Procedure SKY1
  277.    Set Rainbow 0,0,450,"(30,0,1)","(30,0,1)","(30,-1,1)"
  278.    Rainbow 0,110,40,290
  279. End Proc
  280. Procedure SHUFFLE
  281.    For F=1 To 20
  282.       A=Rnd(15)+1 : B=Rnd(15)+1
  283.       Swap BUILD(A),BUILD(B)
  284.    Next F
  285. End Proc
  286. Procedure PAUSE
  287. Amal Freeze 
  288. Mvolume 0
  289. Locate 0,5 : Centre "G  A  M  E       P  A  U  S  E  D"
  290. While Inkey$<>" " : Wend 
  291. Locate 0,5 : Centre Space$(33)
  292. Amal On 
  293. Mvolume MUSVOL
  294. End Proc